//package com;
//
//import com.alibaba.excel.util.StringUtils;
//
//import java.net.URLEncoder;
//import java.security.MessageDigest;
//import java.security.NoSuchAlgorithmException;
//import java.util.*;
//
//public class Solution {
//
//    public static void main(String[] args) {
//        try {
//            String jsSdkSign = new Solution1().getJsSdkSign("http://y6o9rscpt.shenzhuo.vip:20544/");
//            System.out.println("签名：" + jsSdkSign);
//        } catch (NoSuchAlgorithmException e) {
//            throw new RuntimeException(e);
//        }
//    }
//
//    public static String sha1(String input) throws NoSuchAlgorithmException {
//        MessageDigest md = MessageDigest.getInstance("SHA-1");
//        md.update(input.getBytes());
//        byte[] output = md.digest();
//        StringBuilder sb = new StringBuilder();
//        for (byte b : output) {
//            sb.append(String.format("%02x", b));
//        }
//        return sb.toString();
//    }
//
//    /**
//     * 获取js-sdk签名
//     *
//     * @param url 调用方传递的参数
//     * @return
//     */
//    public String getJsSdkSign(String url) throws NoSuchAlgorithmException {
//        Map paramMap = new HashMap();
//        paramMap.put("url", url);
//        String noncestr = generateRandomString();
//        System.out.println("随机字符串：" + noncestr);
//        paramMap.put("noncestr", noncestr);
//
//        paramMap.put("jsapi_ticket", "O3SMpm8bG7kJnF36aXbe8wFpXQ7DtWazs2khILnzjnosXyzpztcZAK9dUT4SiThIzumYdb1kEyJINRTgEnoUdA");
//        long time = System.currentTimeMillis() / 1000;
//        System.out.println("时间戳：" + time);
//        paramMap.put("timestamp", time);
//        String requestParam = formatUrlMap(paramMap, false, false);
//        return  sha1(requestParam);
//    }
//
//    /**
//     * 获取16位随机字符串
//     * @return
//     */
//    public  String generateRandomString() {
//        String upperCaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//        StringBuilder sb = new StringBuilder(16);
//        Random random = new Random();
//        for (int i = 0; i < 16; i++) {
//            sb.append(upperCaseLetters.charAt(random.nextInt(upperCaseLetters.length())));
//        }
//        return sb.toString();
//    }
//    /**
//     * @description: 将参数按照字段名排序
//     */
//    public static String formatUrlMap(Map<String, Object> paraMap, boolean urlEncode, boolean keyToLower) {
//        String buff = "";
//        Map<String, Object> tmpMap = paraMap;
//        try {
//            List<Map.Entry<String, Object>> infoIds = new ArrayList<Map.Entry<String, Object>>(tmpMap.entrySet());
//            // 对所有传入参数按照字段名的 ASCII 码从小到大排序（字典序）
//            Collections.sort(infoIds, new Comparator<Map.Entry<String, Object>>() {
//                @Override
//                public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) {
//                    return (o1.getKey()).toString().compareTo(o2.getKey());
//                }
//            });
//            // 构造URL 键值对的格式
//            StringBuilder buf = new StringBuilder();
//            for (Map.Entry<String, Object> item : infoIds) {
//                if (StringUtils.isNotBlank(item.getKey())) {
//                    String key = item.getKey();
//                    Object val = item.getValue();
//                    if (urlEncode) {
//                        val = URLEncoder.encode(val.toString(), "utf-8");
//                    }
//                    if (keyToLower) {
//                        buf.append(key.toLowerCase() + "=" + val);
//                    } else {
//                        buf.append(key + "=" + val);
//                    }
//                    buf.append("&");
//                }
//            }
//
//            buff = buf.toString();
//            if (buff.isEmpty() == false) {
//                buff = buff.substring(0, buff.length() - 1);
//            }
//        } catch (Exception e) {
//            return null;
//        }
//        return buff;
//    }
//
//}